当把数据源(DataSource)传递给 SpringProcessEngineConfiguration (使用”dataSource”属性)
之后,Activiti内部使用了一个org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
代理来封装传递进来的数据源(DataSource)。这样做是为了确保从数据源(DataSource)获取的SQL连接能够与 Spring 的事物结合在一起发挥得更出色。这意味它不再需要在你的Spring配置中代理数据源(dataSource)了。 然而它仍然允许你传递一个TransactionAwareDataSourceProxy 到SpringProcessEngineConfiguration中。在这个例子中并不会发生多余的包装。
为了确保在你的 Spring 配置中申明的一个TransactionAwareDataSourceProxy,你不能把使用它的应用交给Spring事物控制的资源。(例如 DataSourceTransactionManager 和
JPATransactionManager 需要非代理的数据源 )
...
<tx:annotation-driven transaction-manager="transactionManager"/>
<property name="runtimeService" ref="runtimeService" />
</bean>
</beans>
首先使用任意的一种 Spring 创建应用上下文的方式创建其 Spring 应用上下文。在这个例子中你可以使用类路径下面的 XML 资源来配置我们的Spring 应用上下文:
或者, 如果它是一个测试的话:
@ContextConfiguration("classpath:org/activiti/spring/test/transaction/SpringTransactionIntegrationTest-context.xml")
其他相同的服务也是同样可以这么使用。在这个例子中,Spring 的事物将会围绕在 userBean.hello() 上 ,并且调用 Activiti 服务的方法也会加入到这个事物中。
userBean.hello();
这个 UserBean 看起来像这样。记得在上面 Spring bean 的配置中我们把 repositoryService 注入到 userBean 中。